package jus.aor.talk.ui.client;

import java.rmi.*;
import jus.util.assertion.Require;
/**
* La classe Intervanant implante un utilisateur du forum de discussion.
* ce type d'objet peut être distribué sur le réseau
* @version 	1.0, 30/11/98
* @author	Philippe Morat
* @email	Philippe.Morat@imag.fr
* @see		Forum
* @see		_Intervenant
* @see <a href=Intervenant.txt>Intervenant</a>
*/
public class TestTalkUi implements _IntervenantComposant {
	/**
	* la propriété adaptator utilisée en interface du GUI
	*/
	protected _TalkEventIntervenantAdaptator adaptator;
	public void setAdaptator(_TalkEventIntervenantAdaptator adaptator) {
		this.adaptator = adaptator;
	}
	/**
	* constructeur d'un intervenant
	* @requires argsValide : prenom!=null && nom!=null
	*/
	public TestTalkUi(final String[] args) {
		try {
			if (System.getSecurityManager() == null) {
				System.setSecurityManager(new RMISecurityManager());
			}
			_IntervenantComposant intervenant = TestTalkUi.this;
			intervenant.init(args[1], args[0]);
			TalkUi beanTalk = new TalkUi();
			_TalkEventIntervenantAdaptator adaptator = new TalkEventIntervenantAdaptator(intervenant);
			intervenant.setAdaptator(adaptator);
			beanTalk.addTalkEventListener(adaptator);
			adaptator.addIntervenantEventListener(beanTalk);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	/**
	* initialisation d'un intervenant
	*/
	public void init(String prenom, String nom) throws Require {}
	/**
	* abonnement à un forum de discussion
	* @requires argumentValide : forum!=null
	* @require etatValide : this.forum==null
	*/
	public boolean enter(String forum) throws Require {
		return true;
	}
	/**
	* résiliation du forum de discussion
	* @require etatValide : this.forum!=null
	*/
	public boolean leave() throws Require {
		return true;
	}
	/**
	* mise en vacation de l'intervenant auprès du forum de discussion
	* @require etatValide : this.forum!=null
	*/
	public boolean vacation() throws Require {
		return true;
	}
	/**
	* terminaison de  l'intervenant
	* @require etatValide : this.forum==null
	*/
	public void quit() throws Require {
		System.exit(0);	
	}
	/**
	* envoi d'une participation au forum de discussion
	* @require argumentValide : participation!=null
	* @require etatValide : this.forum!=null
	*/
	public void say(String participation) throws Require {}
	/**
	* demande de la liste des participants au forum de discussion
	* @require etatValide : this.forum!=null
	*/
	public String who() throws Require {
		return null;
	}
	/**
	* création d'un intervenant à un forum de discussion
	*	args n° 1 : le nom de l'intervenant
	*	args n° 2 : le prénom de l'intervenant
	* @require argsValide : args.size()==2
	*/
	public static void main(String[] args) throws Exception {
		new TestTalkUi(args);
	}
}